import { Injectable } from '@angular/core';
import { Observable } from "rxjs";
import "rxjs/Rx";  //这个是引用map方法引的。

@Injectable()
export class WebSocketService {

  ws: WebSocket;

  constructor() { }

  //这个是创建一个websocket
  createObservableSocket(url:string, id:number): Observable<any> {
    this.ws = new WebSocket(url);
    return new Observable<string>(  //新建一个流。什么时候发射下个元素(流)？什么时候抛出一个异常？什么时候发射结束信号？
      observer => {
        this.ws.onmessage = (event) => observer.next(event.data);//1
        this.ws.onerror = (event) => observer.error(event);//2
        this.ws.onclose = (event) => observer.complete();//3
        this.ws.onopen = (event) => this.sendMessage({productId:id});
      }
    );   //注意 这里的格式
  }
//.map(message => { JSON.parse(message) })


  //第二个方法。向服务器发送一个消息。
  sendMessage(message: any) {
    this.ws.send(JSON.stringify(message));
  }


}
